package view;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.ButtonGroup;
import javax.swing.JMenu;
import javax.swing.JMenuItem;

import java.util.ArrayList;

/**
 *
 * @author Alvin & Roy
 */
public class MenuBalk extends javax.swing.JMenuBar{
    //Menu's
    private JMenu file;
    private JMenu opties;

    //Sub menu's
    private JMenu moeilijkheid;

    //menu items
    //file
    private JMenuItem exit;

    //opties
    private JCheckBoxMenuItem showPath;
    private JCheckBoxMenuItem rondeWereld;

    //action listener
    private ButtonListener listener;

    //arraylist voor moeilijkheidsgraden
    private ArrayList<JRadioButtonMenuItem> moeilijkheden;

    //maak een buttongroup voor de moeilijkheden
    private ButtonGroup moeilijkheidGroup;

    /**
     * Constructor
     * @param a De button listener
     */
    public MenuBalk(ButtonListener a){
        super();

        //maak de arraylist voor moeilijkheden
        moeilijkheden = new ArrayList<JRadioButtonMenuItem>();

        //maak de buttongroup voor de moeilijkheden
         moeilijkheidGroup = new ButtonGroup();
        //zet de buttonlistener
        listener = a;

        //maak de menu's aan
        file = new JMenu("Bestand");
        opties = new JMenu("Opties");

        //maak submenu's aan
        moeilijkheid = new JMenu("Moeilijkheid");

        //voeg de menu's toe
        this.add(file);
        this.add(opties);

        //voeg de submenu's toe
        opties.add(moeilijkheid);

        //maak de items aan
        exit = new JMenuItem("Afsluiten");
        showPath = new JCheckBoxMenuItem("Visualiseer route");
        rondeWereld = new JCheckBoxMenuItem("Ronde wereld");

        //voeg de items toe
        file.add(exit);
        opties.add(rondeWereld);
        opties.add(showPath);

        //maak de moeilijkheden aan en voeg deze toe
        setMoeilijkheden();

        //voeg de action listener aan de items toe
        exit.addActionListener(a);
        showPath.addActionListener(a);
        rondeWereld.addActionListener(a);
    }

    /**
     * Maak de moeilijkheidsknoppen aan
     */
    private void setMoeilijkheden(){
        JRadioButtonMenuItem temp = new JRadioButtonMenuItem("Mag ik spelen?");
        moeilijkheid.add(temp);
        moeilijkheidGroup.add(temp);
        moeilijkheden.add(temp);
        //selecteer deze button als default
        temp.setSelected(true);

        temp = new JRadioButtonMenuItem("Ik ben te jong om te sterven!");
        moeilijkheid.add(temp);
        moeilijkheidGroup.add(temp);
        moeilijkheden.add(temp);

        temp = new JRadioButtonMenuItem("Doe me geen pijn!");
        moeilijkheid.add(temp);
        moeilijkheidGroup.add(temp);
        moeilijkheden.add(temp);

        temp = new JRadioButtonMenuItem("Hey, niet te hard!");
        moeilijkheid.add(temp);
        moeilijkheidGroup.add(temp);
        moeilijkheden.add(temp);

        temp = new JRadioButtonMenuItem("Kom maar op!");
        moeilijkheid.add(temp);
        moeilijkheidGroup.add(temp);
        moeilijkheden.add(temp);

        temp = new JRadioButtonMenuItem("Te moeilijk!");
        moeilijkheid.add(temp);
        moeilijkheidGroup.add(temp);
        moeilijkheden.add(temp);

        temp = new JRadioButtonMenuItem("Super gevaarlijk!");
        moeilijkheid.add(temp);
        moeilijkheidGroup.add(temp);
        moeilijkheden.add(temp);

        temp = new JRadioButtonMenuItem("Nachtmerrie");
        moeilijkheid.add(temp);
        moeilijkheidGroup.add(temp);
        moeilijkheden.add(temp);

        moeilijkheid.addSeparator();

        temp = new JRadioButtonMenuItem("Pindakaazzz");
        moeilijkheid.add(temp);
        moeilijkheidGroup.add(temp);
        moeilijkheden.add(temp);

        //stel de action command en listener van elke button in
        int forCount = 1;
        for(JRadioButtonMenuItem forButton : moeilijkheden){
            forButton.setActionCommand(Integer.toString(forCount));
            forButton.addActionListener(listener);
            forCount++;
        }
    }
}
